home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / srumbler.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  18KB  |  476 lines

  1. /***************************************************************************
  2.  
  3.   Speed Rumbler
  4.  
  5.   Driver provided by Paul Leaman
  6.  
  7.   M6809 for game, Z80 and YM-2203 for sound.
  8.  
  9. ***************************************************************************/
  10.  
  11. #include "driver.h"
  12. #include "vidhrdw/generic.h"
  13. #include "cpu/m6809/m6809.h"
  14.  
  15. extern unsigned char *srumbler_backgroundram,*srumbler_foregroundram;
  16.  
  17. WRITE_HANDLER( srumbler_background_w );
  18. WRITE_HANDLER( srumbler_foreground_w );
  19. WRITE_HANDLER( srumbler_scroll_w );
  20. WRITE_HANDLER( srumbler_4009_w );
  21.  
  22. int  srumbler_vh_start(void);
  23. void srumbler_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  24.  
  25.  
  26.  
  27. static WRITE_HANDLER( srumbler_bankswitch_w )
  28. {
  29.     /*
  30.       banking is controlled by two PROMs. 0000-4fff is mapped to the same
  31.       address (RAM and I/O) for all banks, so we don't handle it here.
  32.       e000-ffff is all mapped to the same ROMs, however we do handle it
  33.       here anyway.
  34.       Note that 5000-8fff can be either ROM or RAM, so we should handle
  35.       that as well to be 100% accurate.
  36.      */
  37.     int i;
  38.     unsigned char *ROM = memory_region(REGION_USER1);
  39.     unsigned char *prom1 = memory_region(REGION_PROMS) + (data & 0xf0);
  40.     unsigned char *prom2 = memory_region(REGION_PROMS) + 0x100 + ((data & 0x0f) << 4);
  41.  
  42.     for (i = 0x05;i < 0x10;i++)
  43.     {
  44.         int bank = ((prom1[i] & 0x03) << 4) | (prom2[i] & 0x0f);
  45.         /* bit 2 of prom1 selects ROM or RAM - not supported */
  46.  
  47.         cpu_setbank(i+1,&ROM[bank*0x1000]);
  48.     }
  49. }
  50.  
  51. static void srumbler_init_machine(void)
  52. {
  53.     /* initialize banked ROM pointers */
  54.     srumbler_bankswitch_w(0,0);
  55. }
  56.  
  57. static int srumbler_interrupt(void)
  58. {
  59.     if (cpu_getiloops()==0)
  60.     {
  61.         return interrupt();
  62.     }
  63.     else
  64.     {
  65.         return M6809_INT_FIRQ;
  66.     }
  67. }
  68.  
  69.  
  70.  
  71. static struct MemoryReadAddress readmem[] =
  72. {
  73.     { 0x0000, 0x3fff, MRA_RAM },   /* RAM (of 1 sort or another) */
  74.     { 0x4008, 0x4008, input_port_0_r },
  75.     { 0x4009, 0x4009, input_port_1_r },
  76.     { 0x400a, 0x400a, input_port_2_r },
  77.     { 0x400b, 0x400b, input_port_3_r },
  78.     { 0x400c, 0x400c, input_port_4_r },
  79.     { 0x5000, 0x5fff, MRA_BANK6 },    /* Banked ROM */
  80.     { 0x6000, 0x6fff, MRA_BANK7 },    /* Banked ROM */
  81.     { 0x7000, 0x7fff, MRA_BANK8 },    /* Banked ROM */
  82.     { 0x8000, 0x8fff, MRA_BANK9 },    /* Banked ROM */
  83.     { 0x9000, 0x9fff, MRA_BANK10 },    /* Banked ROM */
  84.     { 0xa000, 0xafff, MRA_BANK11 },    /* Banked ROM */
  85.     { 0xb000, 0xbfff, MRA_BANK12 },    /* Banked ROM */
  86.     { 0xc000, 0xcfff, MRA_BANK13 },    /* Banked ROM */
  87.     { 0xd000, 0xdfff, MRA_BANK14 },    /* Banked ROM */
  88.     { 0xe000, 0xefff, MRA_BANK15 },    /* Banked ROM */
  89.     { 0xf000, 0xffff, MRA_BANK16 },    /* Banked ROM */
  90.     { -1 }  /* end of table */
  91. };
  92.  
  93. /*
  94. The "scroll test" routine on the test screen appears to overflow and write
  95. over the control registers (0x4000-0x4080) when it clears the screen.
  96.  
  97. This doesn't affect anything since it happens to write the correct value
  98. to the page register.
  99.  
  100. Ignore the warnings about writing to unmapped memory.
  101. */
  102.  
  103. static struct MemoryWriteAddress writemem[] =
  104. {
  105.     { 0x0000, 0x1dff, MWA_RAM },
  106.     { 0x1e00, 0x1fff, MWA_RAM, &spriteram, &spriteram_size },
  107.     { 0x2000, 0x3fff, srumbler_background_w, &srumbler_backgroundram },
  108.     { 0x4008, 0x4008, srumbler_bankswitch_w },
  109.     { 0x4009, 0x4009, srumbler_4009_w },
  110.     { 0x400a, 0x400d, srumbler_scroll_w },
  111.     { 0x400e, 0x400e, soundlatch_w },
  112.     { 0x5000, 0x5fff, srumbler_foreground_w, &srumbler_foregroundram },
  113.     { 0x6000, 0x6fff, MWA_RAM }, /* Video RAM 2 ??? (not used) */
  114.     { 0x7000, 0x73ff, paletteram_RRRRGGGGBBBBxxxx_swap_w, &paletteram },
  115.     { 0x7400, 0xffff, MWA_ROM },
  116.     { -1 }  /* end of table */
  117. };
  118.  
  119. static struct MemoryReadAddress sound_readmem[] =
  120. {
  121.     { 0xe000, 0xe000, soundlatch_r },
  122.     { 0xc000, 0xc7ff, MRA_RAM },
  123.     { 0x0000, 0x7fff, MRA_ROM },
  124.     { -1 }  /* end of table */
  125. };
  126.  
  127. static struct MemoryWriteAddress sound_writemem[] =
  128. {
  129.     { 0xc000, 0xc7ff, MWA_RAM },
  130.     { 0x8000, 0x8000, YM2203_control_port_0_w },
  131.     { 0x8001, 0x8001, YM2203_write_port_0_w },
  132.     { 0xa000, 0xa000, YM2203_control_port_1_w },
  133.     { 0xa001, 0xa001, YM2203_write_port_1_w },
  134.     { 0x0000, 0x7fff, MWA_ROM },
  135.     { -1 }  /* end of table */
  136. };
  137.  
  138.  
  139. INPUT_PORTS_START( srumbler )
  140.     PORT_START      /* IN0 */
  141.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  142.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  143.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  144.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  145.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  146.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 )
  147.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  148.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  149.  
  150.     PORT_START      /* IN1 */
  151.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  152.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  153.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  154.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
  155.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
  156.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
  157.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  158.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  159.  
  160.     PORT_START      /* IN2 */
  161.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  162.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_COCKTAIL )
  163.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_COCKTAIL )
  164.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_COCKTAIL )
  165.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  166.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  167.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  168.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  169.  
  170.     PORT_START      /* DSW0 */
  171.     PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_B ) )
  172.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  173.     PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) )
  174.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  175.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
  176.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
  177.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
  178.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  179.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_6C ) )
  180.     PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_A ) )
  181.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) )
  182.     PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
  183.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  184.     PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) )
  185.     PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) )
  186.     PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) )
  187.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) )
  188.     PORT_DIPSETTING(    0x18, DEF_STR( 1C_6C ) )
  189.     PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  190.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
  191.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  192.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  193.  
  194.     PORT_START      /* DSW1 */
  195.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  196.     PORT_DIPSETTING(    0x03, "3" )
  197.     PORT_DIPSETTING(    0x02, "4" )
  198.     PORT_DIPSETTING(    0x01, "5" )
  199.     PORT_DIPSETTING(    0x00, "7" )
  200.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
  201.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  202.     PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
  203.     PORT_DIPNAME( 0x18, 0x18, DEF_STR( Bonus_Life ) )
  204.     PORT_DIPSETTING(    0x18, "20k 70k and every 70k" )
  205.     PORT_DIPSETTING(    0x10, "30k 80k and every 80k" )
  206.     PORT_DIPSETTING(    0x08, "20k 80k" )
  207.     PORT_DIPSETTING(    0x00, "30k 80k" )
  208.     PORT_DIPNAME( 0x60, 0x60, DEF_STR( Difficulty ) )
  209.     PORT_DIPSETTING(    0x40, "Easy" )
  210.     PORT_DIPSETTING(    0x60, "Normal" )
  211.     PORT_DIPSETTING(    0x20, "Hard" )
  212.     PORT_DIPSETTING(    0x00, "Very Hard" )
  213.     PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
  214.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  215.     PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
  216. INPUT_PORTS_END
  217.  
  218.  
  219.  
  220. static struct GfxLayout charlayout =
  221. {
  222.     8,8,    /* 8*8 characters */
  223.     1024,   /* 1024 characters */
  224.     2,      /* 2 bits per pixel */
  225.     { 4, 0 },
  226.     { 0, 1, 2, 3, 8+0,8+1, 8+2, 8+3 },
  227.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
  228.     16*8
  229. };
  230.  
  231. static struct GfxLayout tilelayout =
  232. {
  233.     16,16,  /* 16*16 tiles */
  234.     2048,   /* 2048  tiles */
  235.     4,      /* 4 bits per pixel */
  236.     { 0x20000*8+4, 0x20000*8+0, 4, 0 },
  237.     { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3,
  238.             32*8+0, 32*8+1, 32*8+2, 32*8+3, 33*8+0, 33*8+1, 33*8+2, 33*8+3 },
  239.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
  240.             8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
  241.     64*8
  242. };
  243.  
  244. static struct GfxLayout spritelayout =
  245. {
  246.     16,16,  /* 16*16 sprites */
  247.     2048,   /* 2048 sprites */
  248.     4,      /* 4 bits per pixel */
  249.     { 0x30000*8, 0x20000*8, 0x10000*8, 0   },
  250.     { 0, 1, 2, 3, 4, 5, 6, 7,
  251.             2*64+0, 2*64+1, 2*64+2, 2*64+3, 2*64+4, 2*64+5, 2*64+6, 2*64+7, 2*64+8 },
  252.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  253.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  254.     32*8    /* every sprite takes 32*8 consecutive bytes */
  255. };
  256.  
  257.  
  258. static struct GfxDecodeInfo gfxdecodeinfo[] =
  259. {
  260.     { REGION_GFX1, 0, &charlayout,   448, 16 }, /* colors 448 - 511 */
  261.     { REGION_GFX2, 0, &tilelayout,   128,  8 }, /* colors 128 - 255 */
  262.     { REGION_GFX3, 0, &spritelayout, 256,  8 }, /* colors 256 - 383 */
  263.     { -1 } /* end of array */
  264. };
  265.  
  266.  
  267. static struct YM2203interface ym2203_interface =
  268. {
  269.     2,                      /* 2 chips */
  270.     4000000,        /* 4.0 MHz (? hand tuned to match the real board) */
  271.     { YM2203_VOL(60,20), YM2203_VOL(60,20) },
  272.     { 0 },
  273.     { 0 },
  274.     { 0 },
  275.     { 0 }
  276. };
  277.  
  278.  
  279.  
  280. static struct MachineDriver machine_driver_srumbler =
  281. {
  282.     /* basic machine hardware */
  283.     {
  284.         {
  285.             CPU_M6809,
  286.             1500000,        /* 1.5 Mhz (?) */
  287.             readmem,writemem,0,0,
  288.             srumbler_interrupt,2
  289.         },
  290.         {
  291.             CPU_Z80 | CPU_AUDIO_CPU,
  292.             3000000,        /* 3 Mhz ??? */
  293.             sound_readmem,sound_writemem,0,0,
  294.             interrupt,4
  295.         }
  296.     },
  297.     60, 2500,       /* frames per second, vblank duration */
  298.                 /* hand tuned to get rid of sprite lag */
  299.     1,      /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  300.     srumbler_init_machine,
  301.  
  302.     /* video hardware */
  303.     64*8, 32*8, { 10*8, (64-10)*8-1, 1*8, 31*8-1 },
  304.  
  305.     gfxdecodeinfo,
  306.     512, 512,
  307.     0,
  308.  
  309.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_AFTER_VBLANK,
  310.     0,
  311.     srumbler_vh_start,
  312.     0,
  313.     srumbler_vh_screenrefresh,
  314.  
  315.     /* sound hardware */
  316.     0,0,0,0,
  317.     {
  318.         {
  319.             SOUND_YM2203,
  320.             &ym2203_interface
  321.         }
  322.     }
  323. };
  324.  
  325.  
  326.  
  327. /***************************************************************************
  328.  
  329.   Game driver(s)
  330.  
  331. ***************************************************************************/
  332.  
  333. ROM_START( srumbler )
  334.     ROM_REGION( 0x10000, REGION_CPU1 )  /* 64k for code */
  335.     /* empty, will be filled later */
  336.  
  337.     ROM_REGION( 0x40000, REGION_USER1 ) /* Paged ROMs */
  338.     ROM_LOAD( "14e_sr04.bin", 0x00000, 0x08000, 0xa68ce89c )  /* RC4 */
  339.     ROM_LOAD( "13e_sr03.bin", 0x08000, 0x08000, 0x87bda812 )  /* RC3 */
  340.     ROM_LOAD( "12e_sr02.bin", 0x10000, 0x08000, 0xd8609cca )  /* RC2 */
  341.     ROM_LOAD( "11e_sr01.bin", 0x18000, 0x08000, 0x27ec4776 )  /* RC1 */
  342.     ROM_LOAD( "14f_sr09.bin", 0x20000, 0x08000, 0x2146101d )  /* RC9 */
  343.     ROM_LOAD( "13f_sr08.bin", 0x28000, 0x08000, 0x838369a6 )  /* RC8 */
  344.     ROM_LOAD( "12f_sr07.bin", 0x30000, 0x08000, 0xde785076 )  /* RC7 */
  345.     ROM_LOAD( "11f_sr06.bin", 0x38000, 0x08000, 0xa70f4fd4 )  /* RC6 */
  346.  
  347.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the audio CPU */
  348.     ROM_LOAD( "2f_sr05.bin",  0x0000, 0x8000, 0x0177cebe )
  349.  
  350.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  351.     ROM_LOAD( "6g_sr10.bin",  0x00000, 0x4000, 0xadabe271 ) /* characters */
  352.  
  353.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  354.     ROM_LOAD( "11a_sr11.bin", 0x00000, 0x8000, 0x5fa042ba ) /* tiles */
  355.     ROM_LOAD( "13a_sr12.bin", 0x08000, 0x8000, 0xa2db64af )
  356.     ROM_LOAD( "14a_sr13.bin", 0x10000, 0x8000, 0xf1df5499 )
  357.     ROM_LOAD( "15a_sr14.bin", 0x18000, 0x8000, 0xb22b31b3 )
  358.     ROM_LOAD( "11c_sr15.bin", 0x20000, 0x8000, 0xca3a3af3 )
  359.     ROM_LOAD( "13c_sr16.bin", 0x28000, 0x8000, 0xc49a4a11 )
  360.     ROM_LOAD( "14c_sr17.bin", 0x30000, 0x8000, 0xaa80aaab )
  361.     ROM_LOAD( "15c_sr18.bin", 0x38000, 0x8000, 0xce67868e )
  362.  
  363.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  364.     ROM_LOAD( "15e_sr20.bin", 0x00000, 0x8000, 0x3924c861 ) /* sprites */
  365.     ROM_LOAD( "14e_sr19.bin", 0x08000, 0x8000, 0xff8f9129 )
  366.     ROM_LOAD( "15f_sr22.bin", 0x10000, 0x8000, 0xab64161c )
  367.     ROM_LOAD( "14f_sr21.bin", 0x18000, 0x8000, 0xfd64bcd1 )
  368.     ROM_LOAD( "15h_sr24.bin", 0x20000, 0x8000, 0xc972af3e )
  369.     ROM_LOAD( "14h_sr23.bin", 0x28000, 0x8000, 0x8c9abf57 )
  370.     ROM_LOAD( "15j_sr26.bin", 0x30000, 0x8000, 0xd4f1732f )
  371.     ROM_LOAD( "14j_sr25.bin", 0x38000, 0x8000, 0xd2a4ea4f )
  372.  
  373.     ROM_REGION( 0x0300, REGION_PROMS )
  374.     ROM_LOAD( "63s141.12a",   0x0000, 0x0100, 0x8421786f )    /* ROM banking */
  375.     ROM_LOAD( "63s141.13a",   0x0100, 0x0100, 0x6048583f )    /* ROM banking */
  376.     ROM_LOAD( "63s141.8j",    0x0200, 0x0100, 0x1a89a7ff )    /* priority (not used) */
  377. ROM_END
  378.  
  379. ROM_START( srumblr2 )
  380.     ROM_REGION( 0x10000, REGION_CPU1 )  /* 64k for code */
  381.     /* empty, will be filled later */
  382.  
  383.     ROM_REGION( 0x40000, REGION_USER1 ) /* Paged ROMs */
  384.     ROM_LOAD( "14e_sr04.bin", 0x00000, 0x08000, 0xa68ce89c )  /* RC4 */
  385.     ROM_LOAD( "rc03.13e",     0x08000, 0x08000, 0xe82f78d4 )  /* RC3 (different) */
  386.     ROM_LOAD( "rc02.12e",     0x10000, 0x08000, 0x009a62d8 )  /* RC2 (different) */
  387.     ROM_LOAD( "rc01.11e",     0x18000, 0x08000, 0x2ac48d1d )  /* RC1 (different) */
  388.     ROM_LOAD( "rc09.14f",     0x20000, 0x08000, 0x64f23e72 )  /* RC9 (different) */
  389.     ROM_LOAD( "rc08.13f",     0x28000, 0x08000, 0x74c71007 )  /* RC8 (different) */
  390.     ROM_LOAD( "12f_sr07.bin", 0x30000, 0x08000, 0xde785076 )  /* RC7 */
  391.     ROM_LOAD( "11f_sr06.bin", 0x38000, 0x08000, 0xa70f4fd4 )  /* RC6 */
  392.  
  393.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the audio CPU */
  394.     ROM_LOAD( "rc05.2f",      0x0000, 0x8000, 0xea04fa07 )  /* AUDIO (different) */
  395.  
  396.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  397.     ROM_LOAD( "6g_sr10.bin",  0x00000, 0x4000, 0xadabe271 ) /* characters */
  398.  
  399.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  400.     ROM_LOAD( "11a_sr11.bin", 0x00000, 0x8000, 0x5fa042ba ) /* tiles */
  401.     ROM_LOAD( "13a_sr12.bin", 0x08000, 0x8000, 0xa2db64af )
  402.     ROM_LOAD( "14a_sr13.bin", 0x10000, 0x8000, 0xf1df5499 )
  403.     ROM_LOAD( "15a_sr14.bin", 0x18000, 0x8000, 0xb22b31b3 )
  404.     ROM_LOAD( "11c_sr15.bin", 0x20000, 0x8000, 0xca3a3af3 )
  405.     ROM_LOAD( "13c_sr16.bin", 0x28000, 0x8000, 0xc49a4a11 )
  406.     ROM_LOAD( "14c_sr17.bin", 0x30000, 0x8000, 0xaa80aaab )
  407.     ROM_LOAD( "15c_sr18.bin", 0x38000, 0x8000, 0xce67868e )
  408.  
  409.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  410.     ROM_LOAD( "15e_sr20.bin", 0x00000, 0x8000, 0x3924c861 ) /* sprites */
  411.     ROM_LOAD( "14e_sr19.bin", 0x08000, 0x8000, 0xff8f9129 )
  412.     ROM_LOAD( "15f_sr22.bin", 0x10000, 0x8000, 0xab64161c )
  413.     ROM_LOAD( "14f_sr21.bin", 0x18000, 0x8000, 0xfd64bcd1 )
  414.     ROM_LOAD( "15h_sr24.bin", 0x20000, 0x8000, 0xc972af3e )
  415.     ROM_LOAD( "14h_sr23.bin", 0x28000, 0x8000, 0x8c9abf57 )
  416.     ROM_LOAD( "15j_sr26.bin", 0x30000, 0x8000, 0xd4f1732f )
  417.     ROM_LOAD( "14j_sr25.bin", 0x38000, 0x8000, 0xd2a4ea4f )
  418.  
  419.     ROM_REGION( 0x0300, REGION_PROMS )
  420.     ROM_LOAD( "63s141.12a",   0x0000, 0x0100, 0x8421786f )    /* ROM banking */
  421.     ROM_LOAD( "63s141.13a",   0x0100, 0x0100, 0x6048583f )    /* ROM banking */
  422.     ROM_LOAD( "63s141.8j",    0x0200, 0x0100, 0x1a89a7ff )    /* priority (not used) */
  423. ROM_END
  424.  
  425. ROM_START( rushcrsh )
  426.     ROM_REGION( 0x10000, REGION_CPU1 )  /* 64k for code */
  427.     /* empty, will be filled later */
  428.  
  429.     ROM_REGION( 0x40000, REGION_USER1 ) /* Paged ROMs */
  430.     ROM_LOAD( "14e_sr04.bin", 0x00000, 0x08000, 0xa68ce89c )  /* RC4 */
  431.     ROM_LOAD( "rc03.bin",     0x08000, 0x08000, 0xa49c9be0 )  /* RC3 (different) */
  432.     ROM_LOAD( "rc02.12e",     0x10000, 0x08000, 0x009a62d8 )  /* RC2 (different) */
  433.     ROM_LOAD( "rc01.11e",     0x18000, 0x08000, 0x2ac48d1d )  /* RC1 (different) */
  434.     ROM_LOAD( "rc09.14f",     0x20000, 0x08000, 0x64f23e72 )  /* RC9 (different) */
  435.     ROM_LOAD( "rc08.bin",     0x28000, 0x08000, 0x2c25874b )  /* RC8 (different) */
  436.     ROM_LOAD( "12f_sr07.bin", 0x30000, 0x08000, 0xde785076 )  /* RC7 */
  437.     ROM_LOAD( "11f_sr06.bin", 0x38000, 0x08000, 0xa70f4fd4 )  /* RC6 */
  438.  
  439.     ROM_REGION( 0x10000, REGION_CPU2 ) /* 64k for the audio CPU */
  440.     ROM_LOAD( "rc05.2f",      0x0000, 0x8000, 0xea04fa07 )  /* AUDIO (different) */
  441.  
  442.     ROM_REGION( 0x04000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  443.     ROM_LOAD( "rc10.bin",     0x00000, 0x4000, 0x0a3c0b0d ) /* characters */
  444.  
  445.     ROM_REGION( 0x40000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  446.     ROM_LOAD( "11a_sr11.bin", 0x00000, 0x8000, 0x5fa042ba ) /* tiles */
  447.     ROM_LOAD( "13a_sr12.bin", 0x08000, 0x8000, 0xa2db64af )
  448.     ROM_LOAD( "14a_sr13.bin", 0x10000, 0x8000, 0xf1df5499 )
  449.     ROM_LOAD( "15a_sr14.bin", 0x18000, 0x8000, 0xb22b31b3 )
  450.     ROM_LOAD( "11c_sr15.bin", 0x20000, 0x8000, 0xca3a3af3 )
  451.     ROM_LOAD( "13c_sr16.bin", 0x28000, 0x8000, 0xc49a4a11 )
  452.     ROM_LOAD( "14c_sr17.bin", 0x30000, 0x8000, 0xaa80aaab )
  453.     ROM_LOAD( "15c_sr18.bin", 0x38000, 0x8000, 0xce67868e )
  454.  
  455.     ROM_REGION( 0x40000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  456.     ROM_LOAD( "15e_sr20.bin", 0x00000, 0x8000, 0x3924c861 ) /* sprites */
  457.     ROM_LOAD( "14e_sr19.bin", 0x08000, 0x8000, 0xff8f9129 )
  458.     ROM_LOAD( "15f_sr22.bin", 0x10000, 0x8000, 0xab64161c )
  459.     ROM_LOAD( "14f_sr21.bin", 0x18000, 0x8000, 0xfd64bcd1 )
  460.     ROM_LOAD( "15h_sr24.bin", 0x20000, 0x8000, 0xc972af3e )
  461.     ROM_LOAD( "14h_sr23.bin", 0x28000, 0x8000, 0x8c9abf57 )
  462.     ROM_LOAD( "15j_sr26.bin", 0x30000, 0x8000, 0xd4f1732f )
  463.     ROM_LOAD( "14j_sr25.bin", 0x38000, 0x8000, 0xd2a4ea4f )
  464.  
  465.     ROM_REGION( 0x0300, REGION_PROMS )
  466.     ROM_LOAD( "63s141.12a",   0x0000, 0x0100, 0x8421786f )    /* ROM banking */
  467.     ROM_LOAD( "63s141.13a",   0x0100, 0x0100, 0x6048583f )    /* ROM banking */
  468.     ROM_LOAD( "63s141.8j",    0x0200, 0x0100, 0x1a89a7ff )    /* priority (not used) */
  469. ROM_END
  470.  
  471.  
  472.  
  473. GAME( 1986, srumbler, 0,        srumbler, srumbler, 0, ROT270, "Capcom", "The Speed Rumbler (set 1)" )
  474. GAME( 1986, srumblr2, srumbler, srumbler, srumbler, 0, ROT270, "Capcom", "The Speed Rumbler (set 2)" )
  475. GAME( 1986, rushcrsh, srumbler, srumbler, srumbler, 0, ROT270, "Capcom", "Rush & Crash (Japan)" )
  476.